/**
 * 需求：
 *      新建一个文件，座右铭.txt   写入内容 --  
 */


// 导入 fs 模块
const fs = require('fs');
// 写入文件  writeFile--参数：1.file：文件名  2.data：待写入的数据  3.options：选项设置（可选） 4.callBack  写入回调
// writeFile 是异步线程  回调函数：等js主线任务（I/O线程）执行完毕后，再从队列里执行回调函数
fs.writeFile('C:/Users/cnhis/Desktop/learn/resource/座右铭.txt','三人行必有我师焉，',err=>{
    // json     写入失败的错误对象     写入成功----null
    if(err) {
        console.log('异步，写入失败',err);
    }else {
        console.log('异步，写入成功',err);
    };
});
console.log('异步');

// 同步写入 参数：1.file:文件名  2.data：待写人的数据    同步
fs.writeFileSync('C:/Users/cnhis/Desktop/learn/resource/座右铭1.txt','测试');
console.log('同步');

// 文件的追加写入  参数同 writeFile     异步
fs.appendFile('C:/Users/cnhis/Desktop/learn/resource/座右铭.txt','择其善者而从之，择其不善者而改之！',err=>{
    if(err) {
        console.log('追加失败',err);
    }else {
        console.log('追加成功',err);
    };
})


// 第二次写入回覆盖原来的  所以再 options 可选参数加 flag: 'a',就可以避免覆盖
fs.appendFile('C:/Users/cnhis/Desktop/learn/resource/座右铭.txt','love love love',{flag:'a'},err=>{
    if(err) {
        console.log('追加失败',err);
    }else {
        console.log('追加成功',err);
    };
})

// 同步追加写入 参数同 writeFileSync  （\r\n是windows的换行标志, linux系统 是 \n，  MAC OS系统是： \r ）
fs.appendFileSync('C:/Users/cnhis/Desktop/learn/resource/座右铭1.txt','\r\n温故而知新');
